<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
<script type="text/javascript">
    var primitive = 'Hello';
    console.log(typeof primitive);

    var obj = new String('world');
    console.log(typeof obj);

    console.log(obj[0]);
    console.log(obj[4]);
    console.log(obj.length);

    console.log(obj.valueOf());
    console.log(obj.toString());
    console.log(obj + '');

    // 将基本字符串类型转换为string对象的方法
    // 当我们将一个基本字符串当做对象来使用的时候，后台就会相应的创建string对象，在调用完之后就又把string对象给立即销毁
    console.log('potato'.length);
    console.log('tomato'[0]);
    console.log('potatoes'.length);
    console.log('potatoes'['potatoes'.length - 1]);

    // 基本字符串和string对象之间的区别
    console.log(Boolean());
    console.log(Boolean(new String()));

    // 与number和Boolean类似，如果我们不通过new操作符来调用string，他就会试图将其参数转换为一个基本字符串。
    console.log(String(1));

    // 如果参数是一个对象的话，这就等于调用该对象的toString()方法。
    console.log(String({p: 1}));
    console.log(String([1,2,3]));
    console.log(String([1,2,3]) === [1,2,3].toString());
</script>
</body>
</html>
